`include_once` et `require_once` sont deux structures de langage en PHP, utilisées pour inclure des fichiers externes dans un script. Quoique similaires, elles ont des différences significatives en termes de comportement, spécialement en matière de gestion des erreurs et de contrôle d’exécution.
La structure `include_once` s’assure qu’un fichier est inclus et évalué une seule fois pendant l’exécution d’un script, même si cette directive est rencontrée plusieurs fois. Elle est principalement utilisée pour inclure des fichiers qui contiennent des définitions de fonctions, de classes ou des blocs de code réutilisables.
```
// fichier.php
echo “Bonjour, Monde!”;
?>
```
```
// index.php
include_once ‘fichier.php’;
include_once ‘fichier.php’; // Cette ligne n’aura pas d’effet
?>
```
Le fichier `fichier.php` sera inclus une seule fois, et “Bonjour, Monde!” sera affiché une seule fois.
Gestion des erreurs : Si le fichier spécifié ne peut pas être inclus (par exemple, s’il n’existe pas), `include_once` émettra un avertissement (`E_WARNING`), mais le script continuera à s’exécuter.
```
include_once ‘non_existant.php’; // Émet un avertissement mais continue l’exécution
echo “Suite de l’exécution du script.”;
?>
```
La structure `require_once` fonctionne de la même manière qu’`include_once` en termes d’inclusion unique de fichiers. Cependant, la principale différence réside dans la gestion des erreurs. Si `require_once` échoue à inclure le fichier spécifié, elle émet une erreur fatale (`E_COMPILE_ERROR`) et arrête l’exécution du script immédiatement.
```
// fichier.php
echo “Bonjour encore!”;
?>
```
```
// index.php
require_once ‘fichier.php’;
require_once ‘fichier.php’; // Cette ligne n’aura pas d’effet
?>
```
Comme pour `include_once`, le fichier `fichier.php` sera inclus une seule fois et “Bonjour encore!” sera affiché une seule fois.
Gestion des erreurs : Si le fichier spécifié ne peut pas être inclus, `require_once` produira une erreur fatale et le script s’arrêtera immédiatement.
```
require_once ‘non_existant.php’; // Émet une erreur fatale et arrête l’exécution du script
echo “Vous ne verrez jamais ce message.”;
?>
```
1. Utilisation :
- `include_once` est utilisé lorsque l’inclusion du fichier n’est pas cruciale pour la continuation du script.
- `require_once` est utilisé lorsque l’inclusion du fichier est essentielle au bon fonctionnement du script.
1. Gestion des erreurs :
- `include_once` continue l’exécution en cas d’échec d’inclusion (émission d’un avertissement).
- `require_once` arrête l’exécution en cas d’échec d’inclusion (émission d’une erreur fatale).
1. Performance :
- Les deux fonctions peuvent avoir un impact sur la performance si utilisées de manière excessive, mais `require_once` peut être légèrement plus lent dû à une vérification stricte de l’inclusion obligatoire.
1. PHP Manual – `include_once` : https://www.php.net/manual/fr/function.include-once.php
2. PHP Manual – `require_once` : https://www.php.net/manual/fr/function.require-once.php
3. Stack Overflow – Differences between include_once and require_once : https://stackoverflow.com/questions/2418473/what-is-the-difference-between-include-once-and-require-once
Ces sources fournissent une documentation exhaustive et des discussions communautaires utiles pour comprendre en profondeur le fonctionnement de ces structures.